// setTimeout(()=>{
//     console.log(1);
// })
// console.log(2);
// new Promise((resolve,reject)=>{
//     resolve(3);
//     console.log(4);
// }).then(r=>{
//     console.log(r);
// })
// console.log(5);

// new Promise((resolve)=>{
//     console.log('1');
//     resolve();
//     console.log('2');
// }).then(()=>{
//     console.log('3');
// })
// setTimeout(()=>{
//     console.log('4');
// })
// console.log('5');
// const template = 'My name is ${name},I am from ${city}';
// const data={
//     name:'xiao ming',
//     city:'beijing'
// }
// const sprintf = (template,data)=>{
//     for(var p in data){
//         if(p=='name'){
//             var name = data[p];
//         }else{
//             var city = data[p];
//         }
//     }
//     return template.replace(/$([^}]+)?}/g,function(matched,key){
//         return data[key];
//     })
// }
// const result = sprintf(template,data);
// console.log(result);

const template = 'My name is ${name},I am from ${city}';
const data={
    name:'xiao ming',
    city:'beijing'
}
String.prototype.sprintf=function(obj){
    eval(`var {${Object.keys(obj).join(',')}}=obj`);
    return eval('`'+this+'`');
}
const result = template.sprintf(data);
console.log(result);